iT邦幫忙

2026 iThome 鐵人賽

DAY 8
1
Security

從桃子園灘頭到CySA+系列 第 8

Day08|不要拿到什麼就想著丟沙箱

  • 分享至 

  • xImage
  •  

有一題問,手上有一個來路不明的執行檔,第一步應該做什麼。

我想說丟沙箱跑起來才知道這個執行檔會做什麼,反正沙箱有隔離。

那題正解是先做靜態分析。

靜態分析就是不讓它跑

靜態的意思很直白,檔案放著不動,只看它本體。

算一個 hash 拿去比對公開資料庫裡有沒有這個檔(hash 是把整個檔案算成一串固定長度的字,內容差一個 bit 就會完全不一樣)。把檔案裡看得到的字串整串撈出來,網址、檔案路徑、指令參數有時就直接躺在裡面。再看檔頭,它是什麼格式、什麼時候編譯的、引用了哪些系統功能。這些都不夠再反組譯,也就是把機器碼翻回組合語言來讀。

整個過程它一行都沒有跑起來。

我把隔離當成萬靈丹

執行就是引爆。沙箱是隔離,不讓正式環境受影響,不是完全零風險。

最簡單的靜態分析快速又便宜,hash算好丟給VirusTotal檢查,可以先得到一個初步的判斷。先做便宜又不會出事的,假設在這就已經發現這個執行檔已被大多數防毒判斷為惡意程式,可能就不必丟沙箱做測試了。假如測出來都沒有,也不能馬上斷定這個執行檔就安全,畢竟我們驗的hash是要百分百吻合,只要改一個bit,hash值就不一樣了,但還是能在目標上執行他的任務。

我當時腦子裡只有「它跑不出去」,就跳過了最簡單的一步。

但也不代表所有靜態分析都又快又便宜,相反的,閱讀程式碼甚至反組譯或反編譯,那可不是一天兩天可以做出來的。

那沙箱到底是什麼

沙箱是一個受控、而且看得見裡面發生什麼事的環境。它會記錄這支程式開了哪些檔、改了哪些登錄機碼、往哪裡連線,看完可以整個還原回乾淨的狀態。

所以有時會選擇把可疑的檔案丟進去,觀查他的行為,是一個既避免感染生產環境,又可以分析可疑檔案行為的方式。

有時候答案又是沙箱

如果是在一台主機上幾千個檔案都篩一遍,逐個撈字串、逐個反組譯根本做不完,這時候自動化沙箱可能會是比較好的做法。它不保證每一支都抓得到,但至少跑得完。

有的時候題目就直接說明了,分析師想看==這個binary跑起來會怎樣==

這時候就該沙箱出場了

所以不是拿到就先靜態分析,而是看目的是什麼。

字串撈不到東西的時候

有些檔案撈出來一片空白,或整片亂碼。

靜態到這裡就會卡住,因為可能沒辦法解譯,接下來才輪到動態,讓它在沙箱裡跑起來,看它跑起來是什麼樣子。

我拿到什麼 我的選擇
一個沒看過的執行檔,就這一個 先靜態,hash、字串、檔頭
字串撈出來空空的或全亂碼 可能被包過,準備進沙箱看行為
幾千個檔案要篩 自動化沙箱,一個一個讀做不完
想觀察程式行為 放進沙箱讓它動起來

這個可以自己玩

不用找惡意程式,拿自己機器上正常的程式觀察就好。

Windows 上裝微軟自家 Sysinternals 的 Strings,Linux 直接用 strings,隨便挑一個安裝好的程式撈一次,你會看到一堆路徑跟錯誤訊息的原文。

算 hash 也是內建就有的:

certutil -hashfile C:\Windows\System32\notepad.exe SHA256

把算出來那串貼到 VirusTotal 的 SEARCH 欄位,它會告訴你這個檔案有沒有人交過、各家引擎怎麼判。但是查 hash 跟上傳檔案是兩件不同的事。

公司或客戶的檔案不要直接上傳到公開沙箱或 VirusTotal。檔案一上去就變成資料庫裡的數據。先hash再去查就不會有這個問題。


上一篇
Day07|憑證到底誰簽的
系列文
從桃子園灘頭到CySA+8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言